package com.lagou.sqlSession;

import java.util.List;

/**
 * @author stevejson
 */
public interface SqlSession {
    /**
     * 查询所有
     *
     * @param <E>         返回类型
     * @param statementId statementId
     * @param params      插叙条件
     * @return 结果集
     * @throws Exception ex
     */
    public <E> List<E> selectList(String statementId, Object... params) throws Exception;


    /**
     * 查询单个
     *
     * @param statementId statementId
     * @param params      查询参数
     * @param <T>         返回类型
     * @return 结果集
     * @throws Exception ex
     */
    public <T> T selectOne(String statementId, Object... params) throws Exception;

    /**
     * 插入数据
     *
     * @param statementId id
     * @param params      参数
     * @return 影响行数
     * @throws Exception ex
     */
    public int insert(String statementId, Object... params) throws Exception;


    /**
     * 更新数据
     *
     * @param statementId id
     * @param params      参数
     * @return 影响行数
     * @throws Exception ex
     */
    public int update(String statementId, Object... params) throws Exception;


    /**
     * 删除数据
     *
     * @param statementId id
     * @param params      参数
     * @return 影响行数
     * @throws Exception ex
     */
    public int delete(String statementId, Object... params) throws Exception;

    /**
     * 为dao生成代理实现类
     *
     * @param mapperClass mapper
     * @param <T>         泛型
     * @return 代理对象
     */
    public <T> T getMapper(Class<?> mapperClass);
}
